import NIM from '@/sdk/NIM_Web_NIM_v8.2.0.js'
export default {
    data() {
        return {
            nim: ''
        }
    },
    methods: {
        onConnect() {
            debugger
            console.log('连接成功');
        },
        onWillReconnect(obj) {
            debugger

            // 此时说明 SDK 已经断开连接, 请开发者在界面上提示用户连接已断开, 而且正在重新建立连接
            console.log('即将重连');
            console.log(obj.retryCount);
            console.log(obj.duration);
        },
        onDisconnect(error) {
            debugger

            // 此时说明 SDK 处于断开状态, 开发者此时应该根据错误码提示相应的错误信息, 并且跳转到登录页面
            console.log('丢失连接');
            console.log(error);
            if (error) {
                switch (error.code) {
                    // 账号或者密码错误, 请跳转到登录页面并提示错误
                    case 302:
                        break;
                    // 重复登录, 已经在其它端登录了, 请跳转到登录页面并提示错误
                    case 417:
                        break;
                    // 被踢, 请提示错误后跳转到登录页面
                    case 'kicked':
                        break;
                    default:
                        break;
                }
            }
        },
        onError(error) {
            debugger
            console.log(error);
        },
        handUp() {
            NIM.destroy({
                done: function (err) {
                    console.log('实例已被完全清除')
                }
            })
        },
        // 邀请对方
        invide() {
            var param = {
                channelId: '2ed4a942417e4b33949f1b65739f3f00',
                account: 'cs3',
                requestId: '123',
                offlineEnabled: true,
                attachExt: '12',
                pushInfo: pushInfo
            }

            nim.signalingInvite(param).then(data => {
                console.warn("独立呼叫信令，邀请别人加入频道成功，data：", data)
            }).catch(error => {
                console.warn("独立呼叫信令，邀请别人加入频道失败，error：", error)
                switch (error.code) {
                    case 10404:
                        console.warn("独立呼叫信令：频道不存在")
                        break
                    case 10406:
                        console.warn("独立呼叫信令：不在频道内（自己）")
                        break
                    case 10407:
                        console.warn("独立呼叫信令：已经在频道内（对方）")
                        break
                    case 10419:
                        console.warn("独立呼叫信令：频道人数超限")
                        break
                    case 10201:
                        console.warn("独立呼叫信令：对方云信不在线")
                        break
                    case 10202:
                        console.warn("独立呼叫信令：对方推送不可达");//  可能对方不在线也是返回的这个。
                        break
                }
            })
        },

        // 拒接邀请
        reject() {
            var param = {
                channelId: channelId,
                account: account,
                requestId: requestId,
                offlineEnabled: offlineEnabled,
                attachExt: ext
            }

            nim.signalingReject(param).then(data => {
                console.warn("独立呼叫信令，拒绝别人的邀请，data：", data)
            }).catch(error => {
                console.warn("独立呼叫信令，拒绝别人的邀请失败，error：", error)
                if (error.code == 10404) {
                    console.warn("独立呼叫信令：频道不存在");
                } else if (error.code == 10408) {
                    console.warn("独立呼叫信令：邀请不存在或已过期");
                } else if (error.code == 10409) {
                    console.warn("独立呼叫信令：邀请已经拒绝");
                } else if (error.code == 10410) {
                    console.warn("独立呼叫信令：邀请已经接受");
                } else if (error.code == 10201) {
                    console.warn("独立呼叫信令：对方不在线");
                }
            })
        },
        // 离开频道
        leave() {
            var param = {
                channelId: '2ed4a942417e4b33949f1b65739f3f00',
                offlineEnabled: true,
                attachExt: ''
            }
            nim.signalingLeave(param).then(data => {
                console.warn("独立呼叫信令，离开频道成功，data：", data)
            }).catch(error => {
                console.warn("独立呼叫信令，离开频道失败，error：", error)
                if (error.code == 10406) {
                    console.warn("独立呼叫信令：不在频道内");
                }
            })
        },
        //呼叫信令
        call() {
            const pushInfo = {
                // needPush: pushEnableNode.checked ? 1 : 0,
                // pushTitle: customNotificationNode.value,
                // pushContent: pushContentNode.value,
                // pushPayload: payloadNode.value,
                // needBadge: pushNeedBadgeNode.checked ? 1 : 0,
            }

            const param = {
                type: 2, // 通话类型,1:音频;2:视频;3:其他
                channelName: '', // 频道名，可缺省
                ext: '', // 频道的自定义扩展信息，可缺省
                channelId: '4566',
                uid: '123', // 自己在频道中对应的uid，大于零有效，无效时服务器会分配随机唯一的uid
                account: 'account', // 邀请的对方account账号
                requestId: '123', // 邀请者邀请的请求id，需要邀请者填写，之后取消邀请、拒绝、接受需要复用该requestId
                offlineEnabled: false, // 是否存离线通知
                attachExt: '', //操作者附加的自定义信息，透传给其他人，可缺省
                pushInfo: pushInfo // 推送信息 object
            }

            this.nim.signalingCall(param).then(data => {
                debugger
                console.warn("独立呼叫信令，呼叫成功：", data)
            }).catch(error => {
                console.warn("独立呼叫信令，呼叫失败：", error)
                if (error.code == 10405) {
                    console.warn("独立呼叫信令：频道已存在");
                } else if (error.code == 10201) {
                    console.warn("独立呼叫信令：对方云信不在线");
                } else if (error.code == 10202) {
                    console.warn("独立呼叫信令：对方推送不可达");
                }
            })
        },
        // 加入频道
        jia() {
            var param = {
                channelId: '2ed4a942417e4b33949f1b65739f3f00',
                offlineEnabled: false,
                attachExt: '',
                uid: 132
            }
            nim.signalingJoin(param).then(data => {
                console.warn("独立呼叫信令，加入频道成功，data：", data)
            }).catch(error => {
                console.warn("独立呼叫信令，加入频道失败，error：", error)
                switch (error.code) {
                    case 10407:
                        console.warn("独立呼叫信令：已经在频道内")
                        break
                    case 10419:
                        console.warn("独立呼叫信令：频道人数超限")
                        break
                    case 10417:
                        console.warn("独立呼叫信令：频道成员uid冲突了")
                        break
                    case 10420:
                        console.warn("独立呼叫信令：该账号，在其他端已经登录，并且已经在频道内")
                        break
                    case 10404:
                        console.warn("独立呼叫信令：频道不存在")
                        break
                }
            })
        },
        // 销毁频道
        close() {
            const param = {
                channelId: '2ed4a942417e4b33949f1b65739f3f00',
                offlineEnabled: true,
                ext: ''
            }
            nim.signalingClose(param).then(data => {
                console.warn("独立呼叫信令，关闭频道成功，data：", data)
            }).catch(error => {
                console.warn("独立呼叫信令，关闭频道失败，error：", error)
                if (error.code == 10406) {
                    console.warn("独立呼叫信令：你不在频道内，无法关闭");
                }
            })
        }
    },
    created() {
        // const that = this
        // this.getToken().then(token =>{
        //     this.nim = NIM.getInstance({
        //         appKey: that.config.appkey,
        //         token: token,
        //         account: 'foo',
        //         onconnect: that.onConnect,
        //         onwillreconnect: that.onWillReconnect,
        //         ondisconnect: that.onDisconnect,
        //         onerror: that.onError
        //     })
        // // this.call()

        // })
        
    }
}